function    A102()
format long;

% 传感器在时域中的动态响应就是对输入动态信号产生的输出。
% 动态精度是一个随机过程。传感器的动态输入x(t)和动态输出y(t)关系可用微分方程式来描述。

% 零阶传感器 Zero order sensor
ZOSa0=1; ZOSb0=2;        % 零阶传感器的ZOSa0和ZOSb0是常系数
ZOSs=ZOSb0/ZOSa0;        % ZOSs为静态灵敏度
ZOSt_max=50;             % 设置最大时间点
ZOSt = 0:1:ZOSt_max;     % 设置时间系列ZOSt=0, 1, ..., ZOSt_max

% 零阶传感器的零输入响应
ZOSZx=zeros(1,ZOSt_max+1);    % 为输入函数ZOSZx()赋值0
ZOSZy = 0:1:ZOSt_max;         % 定义输出函数ZOSZy()数组
% 计算输出函数ZOSZy()
ZOSZy(1)=1;                   % 为ZOSZy(0)赋初值
for i=0:ZOSt_max;
    ZOSZy(i+1)=ZOSZy(1);
end
% 零阶传感器零输入响应的可视化表示
subplot(3,3,1);
plot(ZOSt,ZOSZx,'g.-', ZOSt, ZOSZy, 'bd-');
str={['参数取值：'], ['a_0=', num2str(ZOSa0), '，b_0=', num2str(ZOSb0)], ['静态灵敏度s=', num2str(ZOSs)]};
text((max(ZOSt)-min(ZOSt))*5/10, min([ZOSZx, ZOSZy])+(max([ZOSZx, ZOSZy])-min([ZOSZx, ZOSZy]))*5/10, str, 'FontSize', 10);     % 显示输出传感器关键参数a0、b0的赋值，以及静态灵敏度s
legend('零输入', '输出', 'FontSize', 10);
title('零阶传感器的零输入响应', 'FontSize', 10);

% 零阶传感器的脉冲响应
ZOSIx = ZOSt == 0;                  % 输入脉冲函数ZOSIx()
ZOSIy = 0:1:ZOSt_max;               % 定义输出函数ZOSIy()数组
% 计算输出函数ZOSIy()
ZOSIy=ZOSs*ZOSIx;                   % 为ZOSIy(0)赋初值
% 零阶传感器脉冲响应的可视化表示
subplot(3,3,2);
plot(ZOSt,ZOSIx,'g.-', ZOSt, ZOSIy, 'bd-');
str={['参数取值：'], ['a_0=', num2str(ZOSa0), '，b_0=', num2str(ZOSb0)], ['静态灵敏度s=', num2str(ZOSs)]};
text((max(ZOSt)-min(ZOSt))*5/10, min([ZOSIx, ZOSIy])+(max([ZOSIx, ZOSIy])-min([ZOSIx, ZOSIy]))*5/10, str, 'FontSize', 10);     % 显示输出传感器关键参数a0、b0的赋值，以及静态灵敏度s
legend('脉冲输入', '输出', 'FontSize', 10);
title('零阶传感器的脉冲响应', 'FontSize', 10);

% 零阶传感器的阶跃响应
ZOSSx = ZOSt >= 0;                  % 输入阶跃函数ZOSSx()
ZOSSy = 0:1:ZOSt_max;               % 定义输出函数ZOSSy()数组
% 计算输出函数ZOSSy()
ZOSSy=ZOSs*ZOSSx;                   % 为ZOSSy(0)赋初值
% 零阶传感器阶跃响应的可视化表示
subplot(3,3,3);
plot(ZOSt,ZOSSx,'g.-', ZOSt, ZOSSy, 'bd-');
str={['参数取值：'], ['a_0=', num2str(ZOSa0), '，b_0=', num2str(ZOSb0)], ['静态灵敏度s=', num2str(ZOSs)]};
text((max(ZOSt)-min(ZOSt))*5/10, min([ZOSSx, ZOSSy])+(max([ZOSSx, ZOSSy])-min([ZOSSx, ZOSSy]))*5/10, str, 'FontSize', 10);    % 显示输出传感器关键参数a0、b0的赋值，以及静态灵敏度s
legend('阶跃输入', '输出', 'FontSize', 10);
title('零阶传感器的阶跃响应', 'FontSize', 10);

% 一阶传感器 One order sensor
OOSa0=1; OOSa1=3; OOSb0=1;       % 一阶传感器的OOSa0、OOSa1和ZOSb0是常系数
OOSs=OOSb0/OOSa0;                % ZOSs为静态灵敏度
OOStc=OOSa1/OOSa0;               % OOStc为时间常数
OOSt_max=50;                     % 设置最大时间点
OOSt = 0:1:OOSt_max;             % 设置时间系列OOSt=0, 1, ..., OOSt_max

% 一阶传感器的零输入响应
OOSZx=zeros(1,OOSt_max+1);       % 为输入函数OOSZx()赋值0
OOSZy = 0:1:OOSt_max;            % 定义输出函数OOSZy()数组
% 计算输出函数OOSZy()
OOSZy(1)=1;                      % 为OOSZy(0)赋初值1
for i=0:OOSt_max;
    OOSZy(i+1)=OOSZy(1)*exp(-OOSt(i+1)/OOStc);
end
% 一阶传感器零输入响应的可视化表示
subplot(3,3,4);
plot(OOSt,OOSZx,'g.-', OOSt, OOSZy, 'bd-');
str={['参数取值：'], ['a_0=', num2str(OOSa0), '，a_1=', num2str(OOSa1), '，b_0=', num2str(OOSb0)], ['静态灵敏度s=', num2str(OOSs)], ['时间常数\tau=', num2str(OOStc)]};
text((max(OOSt)-min(OOSt))*5/10, min([OOSZx, OOSZy])+(max([OOSZx, OOSZy])-min([OOSZx, OOSZy]))*5/10, str, 'FontSize', 10);    % 显示输出传感器关键参数a0、a1和b0的赋值，以及静态灵敏度s和时间常数tc
legend('零输入', '输出', 'FontSize', 10);
title('一阶传感器的零输入响应', 'FontSize', 10);

% 一阶传感器的脉冲响应
OOSIx = OOSt == 0;              % 输入脉冲函数OOSIx()
OOSIy = 0:1:OOSt_max;           % 定义输出函数OOSIy()数组
% 计算输出函数OOSIy()
OOSIy=OOSs/OOStc*exp(-OOSt/OOStc);   
% 一阶传感器脉冲响应的可视化表示
subplot(3,3,5);
plot(OOSt,OOSIx,'g.-', OOSt, OOSIy, 'bd-');
str={['参数取值：'], ['a_0=', num2str(OOSa0), '，a_1=', num2str(OOSa1), '，b_0=', num2str(OOSb0)], ['静态灵敏度s=', num2str(OOSs)], ['时间常数\tau=', num2str(OOStc)]};
text((max(OOSt)-min(OOSt))*5/10, min([OOSIx, OOSIy])+(max([OOSIx, OOSIy])-min([OOSIx, OOSIy]))*5/10, str,  'FontSize', 10);      % 显示输出传感器关键参数a0、a1和b0的赋值，以及静态灵敏度s和时间常数tc
legend('脉冲输入', '输出',  'FontSize', 10);
title('一阶传感器的脉冲响应',  'FontSize', 10);

% 一阶传感器的阶跃响应
OOSSx = OOSt >= 0;              % 输入阶跃函数OOSSx()
OOSSy = 0:1:OOSt_max;           % 定义输出函数OOSSy()数组
% 计算输出函数OOSSy()
OOSSy=OOSs*(1-exp(-OOSt/OOStc));   
% 一阶传感器阶跃响应的可视化表示
subplot(3,3,6);
plot(OOSt,OOSSx,'g.-', OOSt, OOSSy, 'bd-');
str={['参数取值：'], ['a_0=', num2str(OOSa0), '，a_1=', num2str(OOSa1), '，b_0=', num2str(OOSb0)], ['静态灵敏度s=', num2str(OOSs)], ['时间常数\tau=', num2str(OOStc)]};
text((max(OOSt)-min(OOSt))*5/10, min([OOSSx, OOSSy])+(max([OOSSx, OOSSy])-min([OOSSx, OOSSy]))*5/10, str,  'FontSize', 10);      % 显示输出传感器关键参数a0、a1和b0的赋值，以及静态灵敏度s和时间常数tc
legend('阶跃输入', '输出',  'FontSize', 10);
title('一阶传感器的阶跃响应',  'FontSize', 10);

% 二阶传感器 Two order sensor
TOSt_max=50;                                 % 设置最大时间点
TOSt = 0:1:TOSt_max;                         % 设置时间系列TOSt=0, 1, ..., TOSt_max
% 欠阻尼情况
UTOSa0=1; UTOSa1=1; UTOSa2=4; UTOSb0=1;      % 二阶传感器的UTOSa0、UTOSa1、UTOSa2和UTOSb0是常系数
UTOSs=UTOSb0/UTOSa0;                         % UTOSs为静态灵敏度
UTOStc=UTOSa1/UTOSa0;                        % UTOStc为时间常数
UTOSw0=sqrt(UTOSa0/UTOSa2);                  % UTOSw0为无阻尼系统固定频率
UTOSxi=UTOSa1/(2*sqrt(UTOSa0*UTOSa2));       % UTOSc为阻尼比
% 二阶传感器的零输入响应
TOSZx=zeros(1,TOSt_max+1);                   % 为输入函数TOSx()赋值0
UTOSZy = 0:1:TOSt_max;                       % 定义输出函数UOSZy()数组
% 计算输出函数UTOSZy()
UTOSZy1=exp(-UTOSxi*UTOSw0*TOSt);
UTOSZy2=sin(sqrt(1-UTOSxi^2)*UTOSw0*TOSt+asin(1-UTOSxi^2));    % 相位差为pi/2
for i=1:TOSt_max;
    UTOSZy(i+1)=UTOSZy1(i+1)*UTOSZy2(i+1);
end
% 过阻尼情况
OTOSa0=1; OTOSa1=3; OTOSa2=4; OTOSb0=1;     % 二阶传感器的OTOSa0、OTOSa1、OTOSa2和OTOSb0是常系数
OTOSs=OTOSb0/OTOSa0;                        % OTOSs为静态灵敏度
OTOStc=OTOSa1/OTOSa0;                       % OTOStc为时间常数
OTOSw0=sqrt(OTOSa0/OTOSa2);                 % OTOSw0为无阻尼系统固定频率
OTOSxi=OTOSa1/(2*sqrt(OTOSa0/OTOSa2));      % OTOSxi为阻尼比
% 二阶传感器的零输入响应
OTOSZy = 0:1:TOSt_max;         % 定义输出函数OTOSZy()数组
% 计算输出函数OTOSZy()
OTOSZy=0.5*exp((-OTOSxi+sqrt(OTOSxi^2-1))*OTOSw0*TOSt)+0.5*exp((-OTOSxi-sqrt(OTOSxi^2-1))*OTOSw0*TOSt);
% 临界阻尼情况
CTOSa0=1; CTOSa1=2; CTOSa2=1; CTOSb0=1;     % 二阶传感器的CTOSa0、CTOSa1、CTOSa2和CTOSb0是常系数
CTOSs=CTOSb0/CTOSa0;                        % CTOSs为静态灵敏度
CTOStc=CTOSa1/CTOSa0;                       % CTOStc为时间常数
CTOSw0=sqrt(CTOSa0/CTOSa2);                 % CTOSw0为无阻尼系统固定频率
CTOSxi=CTOSa1/(2*sqrt(CTOSa0*CTOSa2));      % CTOSc为阻尼比
% 二阶传感器的零输入响应
CTOSZy = 0:1:TOSt_max;                      % 定义输出函数CTOSZy()数组
% 计算输出函数CTOSZy()
CTOSZy=exp(-OTOSxi*OTOSw0*TOSt); 
% 二阶传感器零输入响应的可视化表示
subplot(3,3,7);
plot(TOSt,TOSZx,'g.-', TOSt, UTOSZy, 'ro-', TOSt, OTOSZy, 'bd-', TOSt, CTOSZy, 'cs-');
str={['参数取值：'], ['a_0=', num2str(UTOSa0), ',', num2str(OTOSa0),  ',', num2str(CTOSa0), '，a_1=', num2str(UTOSa1),  ',', num2str(OTOSa1),  ',', num2str(CTOSa1), '，a_2=', num2str(UTOSa2),  ',', num2str(OTOSa2),  ',', num2str(CTOSa2), '，b_0=', num2str(UTOSb0),  ',', num2str(OTOSb0),  ',', num2str(CTOSb0),], ['静态灵敏度s=', num2str(OTOSs)], ['时间常数\tau=', num2str(UTOStc)], ['无阻尼固有频率\omega_0=', num2str(OTOSw0)]};
text((max(TOSt)-min(TOSt))*2/10, min([TOSZx, UTOSZy])+(max([TOSZx, UTOSZy])-min([TOSZx, UTOSZy]))*8/10, str,  'FontSize', 10);   % 显示输出传感器关键参数a0、a1、a2和b0的赋值，以及静态灵敏度s、时间常数tc和无阻尼固有频率w0
str1=[ '输出(欠阻尼\xi=', num2str(UTOSxi), '<1)'];
str2=[ '输出(过阻尼\xi=', num2str(OTOSxi), '>1)'];
str3=[ '输出(临界阻尼\xi=', num2str(CTOSxi), ')'];
legend('零输入', str1, str2, str3,  'FontSize', 10);
title('二阶传感器的零输入响应',  'FontSize', 10);

% 欠阻尼时二阶传感器的脉冲输入响应
TOSIx = TOSt == 0;           % 输入脉冲函数TOSIx()
UTOSIy = 0:1:TOSt_max;         % 定义输出函数UTOSIy()数组
% 计算输出函数UTOSIy()
UTOSIy1=UTOSw0*UTOSs/(2*sqrt(1-UTOSxi^2))*exp(-UTOSxi*UTOSw0*TOSt);
UTOSIy2=sin(sqrt(1-UTOSxi^2)*UTOSw0*TOSt);
for i=0:TOSt_max;
    UTOSIy(i+1)=UTOSIy1(i+1)*UTOSIy2(i+1);
end
% 过阻尼时二阶传感器的脉冲输入响应
OTOSIy = 0:1:TOSt_max;         % 定义输出函数OTOSIy()数组
% 计算输出函数OTOSZy()
OTOSIy=-OTOSw0*OTOSs/(2*sqrt(OTOSxi^2-1))*(exp(-(OTOSxi+sqrt(OTOSxi^2-1))*OTOSw0*TOSt)-exp(-(OTOSxi-sqrt(OTOSxi^2-1))*OTOSw0*TOSt));
% 临界阻尼时二阶传感器的脉冲输入响应
CTOSIy = 0:1:TOSt_max;         % 定义输出函数CTOSIy()数组
% 计算输出函数CTOSZy()
CTOSIy1=CTOSw0^2*CTOSs*TOSt;
CTOSIy2=exp(-CTOSw0*TOSt);
for i=0:TOSt_max;
    CTOSIy(i+1)=CTOSIy1(i+1)*CTOSIy2(i+1);
end
% 二阶传感器脉冲输入响应的可视化表示
subplot(3,3,8);
plot(TOSt,TOSIx,'g.-', TOSt, UTOSIy, 'ro-', TOSt, OTOSIy, 'bd-', TOSt, CTOSIy, 'cs-');
str={['参数取值：'], ['a_0=', num2str(UTOSa0), ',', num2str(OTOSa0),  ',', num2str(CTOSa0), '，a_1=', num2str(UTOSa1),  ',', num2str(OTOSa1),  ',', num2str(CTOSa1), '，a_2=', num2str(UTOSa2),  ',', num2str(OTOSa2),  ',', num2str(CTOSa2), '，b_0=', num2str(OTOSb0),  ',', num2str(OTOSb0),  ',', num2str(CTOSb0),], ['静态灵敏度s=', num2str(OTOSs)], ['时间常数\tau=', num2str(UTOStc)], ['无阻尼固有频率\omega_0=', num2str(OTOSw0)]};
text((max(TOSt)-min(TOSt))*2/10, min([TOSIx, UTOSIy])+(max([TOSIx, UTOSIy])-min([TOSIx, UTOSIy]))*7/10, str,  'FontSize', 10);    % 显示输出传感器关键参数a0、a1、a2和b0的赋值，以及静态灵敏度s、时间常数tc和无阻尼固有频率w0
str1=[ '输出(欠阻尼\xi=', num2str(UTOSxi), '<1)'];
str2=[ '输出(过阻尼\xi=', num2str(OTOSxi), '>1)'];
str3=[ '输出(临界阻尼\xi=', num2str(CTOSxi), ')'];
legend('脉冲输入', str1, str2, str3,  'FontSize', 10);
title('二阶传感器的脉冲输入响应',  'FontSize', 10);

% 欠阻尼时二阶传感器的跃迁输入响应
TOSSx = TOSt >= 0;           % 输入脉冲函数TOSSx()
UTOSSy = 0:1:TOSt_max;       % 定义输出函数UTOSSy()数组
% 计算输出函数UTOSSy()
UTOSSy1=-UTOSs*sqrt(1-UTOSxi^2)*exp(-UTOSxi*UTOSw0*TOSt);
UTOSSy2=sin(sqrt(1-UTOSxi^2)*UTOSw0*TOSt+asin(1-UTOSxi^2));
for i=0:TOSt_max;
    UTOSSy(i+1)=UTOSSy1(i+1)*UTOSSy2(i+1)+UTOSs;
end
% 过阻尼时二阶传感器的跃迁输入响应
OTOSSy = 0:1:TOSt_max;         % 定义输出函数OTOSSy()数组
% 计算输出函数OTOSSy()
OTOSSy=-(OTOSxi+sqrt(OTOSxi^2-1))/(2*sqrt(OTOSxi^2-1))*OTOSs*exp(-(OTOSxi+sqrt(OTOSxi^2-1))*OTOSw0*TOSt)+(OTOSxi-sqrt(OTOSxi^2-1))/(2*sqrt(OTOSxi^2-1))*OTOSs*exp(-(OTOSxi-sqrt(OTOSxi^2-1))*OTOSw0*TOSt)+OTOSs;
% 临界阻尼时二阶传感器的阶跃输入响应
CTOSSy = 0:1:TOSt_max;         % 定义输出函数CTOSIy()数组
% 计算输出函数CTOSSy()
CTOSSy1=-(1+CTOSw0*TOSt)*CTOSs;
CTOSSy2=exp(-CTOSw0*TOSt);
for i=0:TOSt_max;
    CTOSSy(i+1)=CTOSSy1(i+1)*CTOSSy2(i+1)+CTOSs;
end
% 二阶传感器阶跃输入响应的可视化表示
subplot(3,3,9);
plot(TOSt,TOSSx,'g.-', TOSt, UTOSSy, 'ro-', TOSt, OTOSSy, 'bd-', TOSt, CTOSSy, 'cs-');
str={['参数取值：'], ['a_0=', num2str(UTOSa0), ',', num2str(OTOSa0),  ',', num2str(CTOSa0), '，a_1=', num2str(UTOSa1),  ',', num2str(OTOSa1),  ',', num2str(CTOSa1), '，a_2=', num2str(UTOSa2),  ',', num2str(OTOSa2),  ',', num2str(CTOSa2), '，b_0=', num2str(OTOSb0),  ',', num2str(OTOSb0),  ',', num2str(CTOSb0),], ['静态灵敏度s=', num2str(UTOSs)], ['时间常数\tau=', num2str(UTOStc)], ['无阻尼固有频率\omega_0=', num2str(OTOSw0)]};
text((max(TOSt)-min(TOSt))*2/10, min([TOSSx, UTOSSy])+(max([TOSSx, UTOSSy])-min([TOSSx, UTOSSy]))*2.5/10, str,  'FontSize', 10);   % 显示输出传感器关键参数a0、a1、a2和b0的赋值，以及静态灵敏度s、时间常数tc和无阻尼固有频率w0
str1=[ '输出(欠阻尼\xi=', num2str(UTOSxi), '<1)'];
str2=[ '输出(过阻尼\xi=', num2str(OTOSxi), '>1)'];
str3=[ '输出(临界阻尼\xi=', num2str(CTOSxi), ')'];
legend('阶跃输入', str1, str2, str3,  'FontSize', 10);
title('二阶传感器的阶跃输入响应',  'FontSize', 10);


